package com.ruoyi.buss.report.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.ruoyi.buss.report.domain.ReportWgshLsb;
import com.ruoyi.buss.utils.DateUtilss;
import com.ruoyi.buss.utils.ListUtil;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.buss.report.mapper.ReportWgcjVillageLsbMapper;
import com.ruoyi.buss.report.domain.ReportWgcjVillageLsb;
import com.ruoyi.buss.report.service.IReportWgcjVillageLsbService;

/**
 * 网格村居报4.2.2-1Service业务层处理
 * 
 * @author sxy
 * @date 2021-07-16
 */
@Service
public class ReportWgcjVillageLsbServiceImpl implements IReportWgcjVillageLsbService 
{
    @Autowired
    private ReportWgcjVillageLsbMapper reportWgcjVillageLsbMapper;

    /**
     * 查询网格村居报4.2.2-1
     * 
     * @param village 网格村居报4.2.2-1ID
     * @return 网格村居报4.2.2-1
     */
    @Override
    public ReportWgcjVillageLsb selectReportWgcjVillageLsbById(String village)
    {
        return reportWgcjVillageLsbMapper.selectReportWgcjVillageLsbById(village);
    }

    /**
     * 查询网格村居报4.2.2-1列表
     * 
     * @param reportWgcjVillageLsb 网格村居报4.2.2-1
     * @return 网格村居报4.2.2-1
     */
    @Override
    public List<ReportWgcjVillageLsb> selectReportWgcjVillageLsbList(ReportWgcjVillageLsb reportWgcjVillageLsb, LoginUser userInfo ,int type)
    {
        List<ReportWgcjVillageLsb> doList = new ArrayList<ReportWgcjVillageLsb>();

        String orgId = userInfo.getSysUser().getDept().getOrgId();
        String userId = userInfo.getSysUser().getUserName();
        //如果是admin用户不做处理
        if(userInfo.getRoles().contains("zhhz")){
            reportWgcjVillageLsb.setOrgId(orgId);
        } else if(userInfo.getRoles().contains("common")){
            reportWgcjVillageLsb.setOrgId(orgId);
            reportWgcjVillageLsb.setUserId(userId);
        }

        // 获取上个月最后一天
        reportWgcjVillageLsb
                .setMonthEnd(reportWgcjVillageLsb.getSjrq() == null || reportWgcjVillageLsb.getSjrq().length()<8?
                        DateUtilss.getLastDayOfMonth(Integer.valueOf(DateUtils.getMMddStr().substring(0, 2))-1):
                        Integer.valueOf(reportWgcjVillageLsb.getSjrq().substring(4,6)) == 1 ?
                                Integer.valueOf(reportWgcjVillageLsb.getSjrq().substring(0,4))-1+"1231":
                                reportWgcjVillageLsb.getSjrq().substring(0,4)+DateUtilss.getLastDayOfMonths(
                                        Integer.valueOf(reportWgcjVillageLsb.getSjrq().substring(4,6))-1));
        // 获取去年最后一天
        reportWgcjVillageLsb.setYearEnd(reportWgcjVillageLsb.getSjrq() == null || reportWgcjVillageLsb.getSjrq().length()<8?
                DateUtilss.getLastYear(new Date(), -1):Integer.valueOf(reportWgcjVillageLsb.getSjrq().substring(0,4))-1+"1231");

        if (reportWgcjVillageLsb.getStartTime() == null) {
            // 如果开始将时间为空 ,则设置开始时间为去年最后一天
            reportWgcjVillageLsb.setStartTime(DateUtilss.getLastYear(new Date(), -1));
        }
        if (reportWgcjVillageLsb.getEndTime() == null) {
            // 如果结束时间为空则设置结束日期到昨天
            reportWgcjVillageLsb.setEndTime(new SimpleDateFormat("yyyyMMdd").format(DateUtilss.getdate(-1)));
        }

        if (type == 0) {
            doList = reportWgcjVillageLsbMapper.wgcjywjdb(reportWgcjVillageLsb);
            ReportWgcjVillageLsb vo = new ReportWgcjVillageLsb();

            List<ReportWgcjVillageLsb> list = reportWgcjVillageLsbMapper.wgcjywjdbhz(reportWgcjVillageLsb);
            if(!ListUtil.isNullOrEmpty(list)){
                vo=list.get(0);
            }
            vo.setOrgName("总行汇总数据");
            doList.add(vo);
        } else if (type == 1) {
            ArrayList<String> sjrqs = DateUtilss.getThreeYearFourQuarterAndMonth();
            reportWgcjVillageLsb.setSjrqs(sjrqs);
            doList = reportWgcjVillageLsbMapper.wgcjywjdbMonth(reportWgcjVillageLsb);
        } else if (type == 2) {
            /**
             * 获取三年内每个月最后一天
             */
            ArrayList<String> sjrqs = DateUtilss.getEndMonthByYear(1, 0);
            reportWgcjVillageLsb.setSjrqs(sjrqs);
            doList = reportWgcjVillageLsbMapper.wgcjywjdbMonth(reportWgcjVillageLsb);
        }

        return doList;
    }

    /**
     * 新增网格村居报4.2.2-1
     * 
     * @param reportWgcjVillageLsb 网格村居报4.2.2-1
     * @return 结果
     */
    @Override
    public int insertReportWgcjVillageLsb(ReportWgcjVillageLsb reportWgcjVillageLsb)
    {
        reportWgcjVillageLsb.setCreateTime(DateUtils.getNowDate());
        return reportWgcjVillageLsbMapper.insertReportWgcjVillageLsb(reportWgcjVillageLsb);
    }

    /**
     * 修改网格村居报4.2.2-1
     * 
     * @param reportWgcjVillageLsb 网格村居报4.2.2-1
     * @return 结果
     */
    @Override
    public int updateReportWgcjVillageLsb(ReportWgcjVillageLsb reportWgcjVillageLsb)
    {
        return reportWgcjVillageLsbMapper.updateReportWgcjVillageLsb(reportWgcjVillageLsb);
    }

    /**
     * 批量删除网格村居报4.2.2-1
     * 
     * @param villages 需要删除的网格村居报4.2.2-1ID
     * @return 结果
     */
    @Override
    public int deleteReportWgcjVillageLsbByIds(String[] villages)
    {
        return reportWgcjVillageLsbMapper.deleteReportWgcjVillageLsbByIds(villages);
    }

    /**
     * 删除网格村居报4.2.2-1信息
     * 
     * @param village 网格村居报4.2.2-1ID
     * @return 结果
     */
    @Override
    public int deleteReportWgcjVillageLsbById(String village)
    {
        return reportWgcjVillageLsbMapper.deleteReportWgcjVillageLsbById(village);
    }
}
